feat(messaging): add message bus pattern#373
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.Scanned FilesNone |
Test Results 1 files 1 suites 2m 40s ⏱️ Results for commit 3fc9808. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #373 +/- ##
==========================================
+ Coverage 89.59% 95.62% +6.02%
==========================================
Files 500 502 +2
Lines 40966 41181 +215
Branches 5913 5948 +35
==========================================
+ Hits 36705 39378 +2673
+ Misses 1942 1803 -139
+ Partials 2319 0 -2319
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
🔍 PR Validation ResultsVersion: `` ✅ Validation Steps
📊 ArtifactsDry-run artifacts have been uploaded and will be available for 7 days. This comment was automatically generated by the PR validation workflow. |
Code Coverage |
There was a problem hiding this comment.
Pull request overview
Adds the Message Bus enterprise integration pattern slice to PatternKit, including a fluent runtime API over MessageChannel<TPayload>, a source generator for topology factories, and the accompanying production-ready example + documentation/benchmark coverage updates.
Changes:
- Introduces
MessageBus<TPayload>(publish/subscribe by topic) and publish-result delivery reporting inPatternKit.Core. - Adds
[GenerateMessageBus]+[MessageBusRoute]and a newMessageBusGeneratorwith diagnostics/release tracking + generator tests. - Adds an order message bus example (fluent + generated + DI), updates catalogs/docs, and adds BenchmarkDotNet coverage rows.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| test/PatternKit.Tests/Messaging/Channels/MessageBusTests.cs | Adds core behavior tests for publish fan-out, rejection capture, and runtime subscriptions. |
| test/PatternKit.Generators.Tests/MessageBusGeneratorTests.cs | Validates generator output and diagnostic IDs for the message bus generator. |
| test/PatternKit.Generators.Tests/AbstractionsAttributeCoverageTests.cs | Ensures new messaging attributes are covered for defaults/targets/validation. |
| test/PatternKit.Examples.Tests/ProductionReadiness/PatternKitPatternCatalogTests.cs | Updates production-readiness pattern list/counts to include Message Bus. |
| test/PatternKit.Examples.Tests/ProductionReadiness/PatternKitBenchmarkCoverageTests.cs | Updates expected benchmark matrix totals to account for Message Bus rows. |
| test/PatternKit.Examples.Tests/Messaging/OrderMessageBusExampleTests.cs | Adds example coverage for fluent vs generated parity and DI import paths. |
| src/PatternKit.Generators/Messaging/MessageBusGenerator.cs | Implements the incremental generator that emits MessageBus<TPayload> factories + diagnostics. |
| src/PatternKit.Generators/AnalyzerReleases.Unshipped.md | Registers new PKBUS diagnostics in analyzer release tracking. |
| src/PatternKit.Generators.Abstractions/Messaging/MessageChannelAttributes.cs | Adds [GenerateMessageBus] and [MessageBusRoute] attributes. |
| src/PatternKit.Examples/ProductionReadiness/PatternKitPatternCatalog.cs | Adds catalog entry wiring docs/tests/generator/example assets for Message Bus. |
| src/PatternKit.Examples/ProductionReadiness/PatternKitExampleCatalog.cs | Adds example catalog descriptor for “Order Message Bus”. |
| src/PatternKit.Examples/Messaging/OrderMessageBusExample.cs | Adds fluent + generated message bus example and DI registration helpers. |
| src/PatternKit.Examples/DependencyInjection/PatternKitExampleServiceCollectionExtensions.cs | Registers the message bus example in the aggregate examples composition. |
| src/PatternKit.Core/Messaging/Channels/MessageChannel.cs | Adds MessageBus<TPayload> plus delivery/publish result types to the core messaging surface. |
| README.md | Updates pattern family counts and benchmark summary table to include Message Bus. |
| docs/patterns/messaging/README.md | Adds Message Bus to the messaging patterns index. |
| docs/patterns/messaging/message-bus.md | Adds the new pattern documentation page for Message Bus. |
| docs/guides/pattern-coverage.md | Updates pattern coverage matrix to include Message Bus. |
| docs/guides/benchmark-results.md | Updates benchmark results tables and published coverage totals with Message Bus rows. |
| docs/generators/toc.yml | Adds Message Bus generator docs to the generators TOC. |
| docs/generators/message-bus.md | Adds documentation for [GenerateMessageBus] usage and diagnostics. |
| docs/generators/index.md | Adds Message Bus to the generator index table. |
| docs/examples/order-message-bus.md | Adds documentation for the production-oriented Order Message Bus example. |
| benchmarks/PatternKit.Benchmarks/Messaging/MessageBusBenchmarks.cs | Adds construction/execution benchmarks for fluent vs generated Message Bus. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| foreach (var attr in method.GetAttributes().Where(static a => a.AttributeClass?.ToDisplayString() == "PatternKit.Generators.Messaging.MessageBusRouteAttribute")) | ||
| { | ||
| if (!method.IsStatic || !ReturnsMessageChannel(method, payloadType) || attr.ConstructorArguments.Length != 1 || attr.ConstructorArguments[0].Value is not string topic || string.IsNullOrWhiteSpace(topic)) | ||
| { | ||
| context.ReportDiagnostic(Diagnostic.Create(InvalidRoute, method.Locations.FirstOrDefault(), method.Name)); | ||
| continue; |
Summary
Validation
Closes #363 for the Message Bus slice. Tracks Messaging Bridge in #372.